iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0

DQN是不良人物?!

DQN(Deep Q learning)是指深度的Q learning,而甚麼是深度呢?
複習一下,Q learning有張Q表,而DQN即是把Q表換成卷積神經網路。

為什麼要用DQN而不是Q learning?

在FrozenLake中,Action只有4個,State有64種,但今天如果是比較複雜的遊戲呢? Action數量增加,State數量也會更著增加,這樣會導致Q Table暴脹,使Q learning無法將所有State的Q Value計算出來,要計算出來可能會花更久的時間甚至會發生記憶體不足的情況。
因此DQN解決了此問題。

Replay Memory

DQN與Q learning不同的地方是DQN具有replay memory。
它的作用在於紀錄資料,一般我們訓練資料集希望是能隨機分散的,但強化學習的資料是有順序的,因此需要有replay memory來儲存資料,再利用隨機採樣的方式進行訓練,如此即可避免資料前後具有關練性。

演算法


取至Playing Atari with Deep Reinforcement Learning

初始化

初始化replay memory,並且容量為N,如果超過N,就捨棄掉第一筆。
初始化Q function

epoch

  • 使用ε(epsilon)來進行探索,隨機選擇動作$a_t$,否則選擇Q表裡面最大的Action。
  • 執行動作得到reward以及下一個狀態
  • 將這些資訊儲存在D裡面。
  • 隨機從D裡面拿出minibatch的數量來訓練。
  • 得到$y_t$,帶入梯度下降法,進行迭代的更新。

影片

Yes

可以看到透過DQN學習後,機器人學會打磚塊了!

結論

DQN可以減少訓練所需的數據量,並能應付更大的Action數量、State數量,且能達到不錯的效果。

參考資料

Deep Q-learning (DQN) 原理說明
[機器學習 ML NOTE] Reinforcement Learning 強化學習(DQN原理)
深度強化學習當中加入Memory replay的原因和作用是什麼?
強化學習基礎David Silver筆記


上一篇
Day 8 Q learning如何實現
下一篇
Day 10 DQN如何實現
系列文
Machine Learning與軟工是否搞錯了什麼?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言